webview功用是在應用內部嵌入網頁瀏覽功能,可以讓應用程式不必跳轉到瀏覽器,而是直接在應用內部加載和顯示網頁內容
必須先在build(app)添加一個webview的依賴:
implementation ("androidx.webkit:webkit:1.8.0")
接著再系統(AndroidManifests)(路徑:app/manifests/AndroidManifests)添加網路權限
<uses-permission android:name="android.permission.INTERNET" />
非常簡易就是拉一個webview物件
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
我們需要兩樣變數來處理網址,webview來綁定元件並把設定在物件上,webSettings則是真正在處理網址,功用是開啟javascript並新增瀏覽頁
程式如下
public class MainActivity extends AppCompatActivity {
WebView webview;
WebSettings webSettings;
String url="https://www.google.com.tw/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = findViewById(R.id.web);
webSettings=webview.getSettings();
webSettings.setJavaScriptEnabled(true);//開啟javascript功能
webview.setWebViewClient(new WebViewClient());//新增瀏覽器客戶端
webview.loadUrl(url);//讀取url網站
}
最後處理一下返回的問題,寫了一個如果網頁可以回到上一頁則返回上一頁否則退出activity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {//如果按下返回鍵&能後退為true
webview.goBack();//返回上一頁
return true;
}
return super.onKeyDown(keyCode, event);
}